/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.dojotec.biblioteca.jsf.application;

import com.dojotec.biblioteca.jsf.dao.LivroDAO;
import com.dojotec.biblioteca.jsf.domain.Livro;
import com.dojotec.biblioteca.jsf.domain.LivroRepository;
import java.util.LinkedList;
import java.util.List;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;

/**
 *
 * @author igocoelho
 */
public class LivroBean {

    private DataModel livros = null;
    private LivroRepository livro = new LivroDAO();
    private Livro livroPojo = new Livro();
    
    public LivroBean() {
        
    }
    
    public String gotoNovoLivro() {
        return "novoLivro";
    }       
    
    public String gotoAlteraLivro() {
        setLivroPojo((Livro)livros.getRowData());
        return "alteraLivro";
    }
    
    public String gotoListaLivros() {
        return "listaLivros";
    }

    public DataModel getLivros() {
        return livros;
    }

    public void setLivros(DataModel livros) {
        this.livros = livros;
    }

    public LivroRepository getLivro() {
        return livro;
    }

    public void setLivro(LivroRepository livro) {
        this.livro = livro;
    }

    public Livro getLivroPojo() {
        return livroPojo;
    }

    public void setLivroPojo(Livro livroPojo) {
        this.livroPojo = livroPojo;
    }
    
    public DataModel getTodosLivros() {
        setLivros(new ListDataModel(getLivro().buscarTodos()));
        return getLivros();
    }
    
    public String salvar() {
        try {
            livro.salvar(getLivroPojo());
            return gotoListaLivros();
        } catch (Exception e) {
            return "failure";
        }
    }
    
    public String atualizar() {
        try {
            livro.atualizar(getLivroPojo());
            return gotoListaLivros();
        } catch (Exception e) {
            return "failure";
        }    
    }
    
    public String excluir() {
        try {
            setLivroPojo((Livro)livros.getRowData());
            livro.excluir(getLivroPojo());
            return gotoListaLivros();
        } catch (Exception e) {
            return "failure";
        }
    }
    
    public List<SelectItem> getComboLivros() {
        List<SelectItem> toReturn = new LinkedList<SelectItem>();
        LivroRepository livroDao = new LivroDAO();
        for (Livro livroPj: livroDao.buscarTodos()) {
            toReturn.add(new SelectItem(livroPj, livroPj.getTitulo()));
        }
        return toReturn;
    }

}
